class Solution {
public:
    int bec(string& a){
        int flag=1;
        auto it1=a.begin();
        if(*it1=='-'){
            flag=0;
            it1++;
        }
        int ret=0;
        while(it1!=a.end()){
            ret=10*ret+(*it1-'0');
            it1++;
        }
        if(flag==0){
            ret=-ret;
        }
        return ret;
    }
    // string cam(int a){
    //     string ret;
    //     int flag=1;
    //     if(a<0){
    //         a*=-1;
    //         flag=0;
    //     }
    //     int s=0;
    //     while(a){
    //         s=a%10;
    //         a/=10;
    //         ret.push_back(s+'0');
    //     }
    //     if(flag==0){
    //         ret.push_back('-');
    //     }
    //     ret=string(ret.rbegin(),ret.rend());
    //     return ret;
    // }
    int evalRPN(vector<string>& tokens) {
        stack<int> s;
        auto it=tokens.begin();
        int a,b;
        while(it!=tokens.end()){
            if(*it!="+" && *it!="-" && *it!="*" && *it!="/"){
                s.push(bec(*it));
            }
            else{
                a=s.top();
                s.pop();
                b=s.top();
                s.pop();
                if(*it=="+"){
                    b+=a;
                }
                if(*it=="-"){
                    b-=a;
                }
                if(*it=="*"){
                    b*=a;
                }
                if(*it=="/"){
                    b/=a;
                }
                s.push(b);
            }
            it++;
        }
        return s.top();
    }
};
